package org.liaohailong.library.widget.shopping.adapter;

import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

/**
 * Author: Victor
 * E-mail: liaohailong190@foxmail.com
 * Date: 2019/6/22 15:13
 * Description: 适配器规范
 */
public interface IShoppingAdapter<VH extends ShoppingViewHolder> {

    /**
     * @return 总条目数
     */
    int getItemCount();

    /**
     * 获取条目类型
     *
     * @param position 位置
     * @return 条目类型
     */
    @NonNull
    ShoppingItemViewType getItemViewType(int position);

    /**
     * 创建ViewHolder
     *
     * @param parent   父容器（IShoppingListView）
     * @param viewType 条目类型
     * @return ViewHolder
     */
    @NonNull
    VH onCreateViewHolder(@NonNull ViewGroup parent, @NonNull ShoppingItemViewType viewType);

    /**
     * 绑定数据
     *
     * @param viewHolder 视图挂载器
     * @param position   当前位置
     * @param payLoad    附带信息（局部更新使用）
     */
    void onBindViewHolder(@NonNull VH viewHolder, int position, @Nullable Object payLoad);
}
